{
    //类的基本定义
    // class Parent{
    //
    //     constructor(name="拉拉",age=18){
    //         //这里就是以前的写实例的属性的地方
    //         this.name=name;
    //         this.age=age;
    //     }
    // }

    // //ES5的方法
    // function Parent(name, age) {
    //     this.name=name;
    //     this.age=age;
    // }
    //
    // let a=new Parent("lol",99);
    // console.log(a);

}

{

}


{

    // //继承传递参数
    // class Parent {
    //     constructor(name = 'mukewang') {
    //         this.name = name;
    //     }
    // }
    //
    // //继承使用extends关键字来实现继承
    // class Child extends Parent {
    //
    //     constructor(name){
    //         //这里可以给父类传递参数
    //         //相当于父类的构造函数体当中的代码在这里执行
    //         super();
    //         //这样写就覆盖了原有的属性了(父类的)
    //         this.name=name;
    //
    //     }
    // }

    // let a=new Child("haha");
    // console.log(a);

    // function Parent(name) {
    //     this.name=name;
    // }
    //
    // function Child(name) {
    //     Parent.call(this,name);
    // }
    // Child.prototype.__proto__=Parent.prototype;
    // //这样做的好处就是子类也可以继承父类的静态方法
    // Child.__proto__=Parent;
    // let a=new Child("haha");

}


{
    //更复杂的继承
    //继承传递参数
    // class Parent {
    //     constructor(name = 'mukewang') {
    //         this.name = name;
    //     }
    // }
    //
    // //继承使用extends关键字来实现继承
    // class Child extends Parent {
    //
    //     constructor(name,haha){
    //         //这里可以给父类传递参数
    //         //相当于父类的构造函数体当中的代码在这里执行
    //         //并且把name给传递进去
    //         //如果super()是空的话,那么父类就会调用默认值(如果有的话)
    //         //而且super一定要放在第一行
    //         super(name);
    //         //这里的子类增加了新的自定义的属性
    //         this.haha=haha;
    //     }
    // }
    //
    // console.log(new Child("lol","haha"))
}

{
    //关于静态方法
    // class Parent{
    //
    //     constructor(name="haha"){
    //         this.name=name;
    //     };
    //
    // }
    //
    // let a=new Parent('lol');

}




















































